public class 仅仅反转字母方法二 {
    //主要使用字符串的方式, 先将非字母元素翻转, 然后加入非字母元素
    public String reverseOnlyLetters(String s) {
        int n = s.length();
        a[] save = new a[n];
        int size = 0;
        StringBuilder sb = new StringBuilder();
        for(int i = 0;i < n;i++){
            //碰到字母直接加入
            //碰到其他字符直接存起来这个位置, 到时候再进行插入
            char ch = s.charAt(i);
            if( (ch <= 'z' && ch >= 'a') || (ch <= 'Z' && ch >= 'A')){
                sb.append(ch);
            }else{
                save[size++] = new a(i,ch);
            }
        }
        //翻转
        sb.reverse();
        //翻转以后加入非字符元素
        for(int i = 0;i < size;i++){
            sb.insert(save[i].index,save[i].ch);
        }
        return sb.toString();
    }
}
//创建一个类来存储信息
class a{
    int index;
    char ch;
    public a(int index,char ch){
        this.index = index;
        this.ch = ch;
    }
}
